package com.sun.kamun.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.sun.kamun.entity.User;
import com.sun.kamun.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.util.Date;

@Controller
@RequestMapping("/user")
@Slf4j
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/register")
    public String getRegister(){
        return "userregister";
    }

    @PostMapping("/register")
    public String register(User user) {
        try {
            // 获取当前时间
            Date currentTime = new Date();
            user.setUserCreatetime(currentTime);
            user.setUserUpdatetime(currentTime);
            // 调用userService注册用户
            userService.register(user);
            return "userlogin";  // 注册成功后重定向到登录页面
        } catch (Exception e) {
            // 处理注册失败的情况
            return "userregister";  // 注册失败时返回注册页面
        }
    }


    @GetMapping("/login")
    public String login() {
        return "userlogin";
    }

    @PostMapping("/login")
    public String login(HttpSession session, @RequestParam String username, @RequestParam String password) {
        // 核实账号密码是否存在且正确
        User user = userService.login(username, password);
        // 根据输入的用户名去查询用户状态
        LambdaQueryWrapper<User> wrapper=new LambdaQueryWrapper<>();
        wrapper.eq(User::getUserName,username);
        // 获取用户账号状态(0 正常登录  1 禁用 )
        User one = userService.getOne(wrapper);
        if (user == null) {
            // 登录失败
            return "userlogin";
        }else if(one.getUserStatus()==1){
            log.info("用户状态异常,请联系管理员");
            return "userlogin";
        }
        else {
//            String token = JwtUtils.createToken(one.getUserName());
//            System.out.println(token);
//            Map<String,Object> map = new HashMap<>();
//            map.put("user",one);
//            map.put("token",token);
//            //将token存入Http的header中
//            response.setHeader(JwtUtils.USER_LOGIN_TOKEN, (String) map.get("token"));
            // 登录成功，将用户对象存储在 session 中
            session.setAttribute("user", user);
            session.setMaxInactiveInterval(60*60*24);  // 设置过期时间为1*60*24分钟(登录状态1天失效)
            log.info("打开卡盟商城首页");
            // 重定向到商品展示页面
//            return "redirect:/product/findAll";
            // 打开商城首页
            return "userindex";
        }
    }


    /**
     * 用户---退出登录
     * */
    @GetMapping("/logout")
    public String logout(HttpSession session){
        // 清空当前会话的相关信息
        session.invalidate();
        // 跳转到登录页或其他需要跳转的页面
        return "redirect:/user/login";
    }

}
